package fu.capstone.hanoicityguide.dataaccess.base;

import java.util.ArrayList;

import android.database.sqlite.SQLiteDatabase;
import fu.capstone.hanoicityguide.business.model.Category;

public interface BaseDAO {

	int getLastestDBVersionId();

	DatabaseHelper connectDB();

	void closeDB(SQLiteDatabase database, DatabaseHelper dbHelper);

	long insertHome(int homeId, String overview, String history,
			int albumImageId);

	ArrayList<Category> getListCategory(String filter);

	String[] getListHotelClass();

	String[] getListType(int categoryID);

	long insertHoliday(int holidayID, String holidayName, String holidayDesc,
			int albumImageID);

	long insertFood(int foodID, String foodName, String foodDesc, int ratingID,
			int albumImageID, int geoId, float price, String address,
			String phoneNumber);

	long insertPlace(int placeId, String placeName, int geoId, int categoryId,
			int typeId, int albumImageId, int ratingId, int classId,
			float placePrice, String placeDescription, String placeAddress,
			String placePhone, String placeWebsite,
			String openTime, String closeTime, int dbVersionId);

	long insertClass(int classId, String className);

	long insertGeolocation(int geolocationID, double geolocationLong,
			double geolocationLat);

	long insertRating(int ratingId, int ratingValue);

	long insertAlbumImage(int albumImageId, String iconPath,
			ArrayList<String> imgPath);

	long insertType(int typeID, int categoryID, String typeName);

	long insertCategory(int categoryID, String categoryName);

	long insertTransportCategory(int transportCategoryID,
			String transportCategoryName);

	long insertTransport(int transportID, int transportCategoryID,
			String transportName, String firstLeg, String secondLeg,
			String price, String phoneNumber, String website,
			String transportIconPath);

	long insertCommonDialogue(int dialogueId, String VietnameseContent,
			String EnglishContent, String audioPath);

	long insertItinerary(int itineraryId, String itineraryName, int ratingId,
			int albumImageId, int dbVersionId);

	long insertItineraryDetail(int itineraryId, int placeId, int placeOder,
			int dBVersionId);

	long insertTour(int id, String name, int providerId, int ratingId,
			int albumImageId, float price, float duration, String desc,
			int dbVersionId);

	long insertTourProvider(int id, String name, String iconPath,
			String address, String website, String phoneNumber, int dbVersionId);

	long insertDBVersion(int dbVersionId, String versionName,
			String updateStatus);

	boolean backupDatabase();

	boolean restoreDatabase();

	boolean deleteDatabase();

	boolean deleteBackupDatabase();

}
